const app = getApp();

Page({
  data: {
    username: '',
    password: '',
    confirmPassword: '',
    nickname: '',
    gender: '男',
    loading: false,
    genderOptions: ['男', '女', '未知'],
    avatarUrl: ''
  },

  // 输入用户名
  inputUsername(e) {
    this.setData({
      username: e.detail.value
    });
  },

  // 输入密码
  inputPassword(e) {
    this.setData({
      password: e.detail.value
    });
  },

  // 确认密码
  inputConfirmPassword(e) {
    this.setData({
      confirmPassword: e.detail.value
    });
  },

  // 输入昵称
  inputNickname(e) {
    this.setData({
      nickname: e.detail.value
    });
  },

  // 选择性别
  selectGender(e) {
    this.setData({
      gender: this.data.genderOptions[e.detail.value]
    });
  },
  
  // 选择头像
  chooseAvatar() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        // 设置头像临时路径
        this.setData({
          avatarUrl: res.tempFilePaths[0]
        });
      }
    });
  },

  // 注册
  register() {
    const { username, password, confirmPassword, nickname, gender, avatarUrl } = this.data;
    
    // 表单验证
    if (!username || !password) {
      wx.showToast({
        title: '用户名和密码不能为空',
        icon: 'none'
      });
      return;
    }
    
    if (password !== confirmPassword) {
      wx.showToast({
        title: '两次输入的密码不一致',
        icon: 'none'
      });
      return;
    }
    
    this.setData({ loading: true });
    
    // 如果选择了头像，先上传头像
    if (avatarUrl) {
      this.uploadAvatarAndRegister();
    } else {
      // 没有头像直接注册
      this.doRegister();
    }
  },
  
  // 上传头像并注册
  uploadAvatarAndRegister() {
    wx.showLoading({
      title: '上传头像中...',
      mask: true
    });
    
    // 上传头像到服务器
    wx.uploadFile({
      url: 'http://localhost:3000/api/upload/register-avatar',
      filePath: this.data.avatarUrl,
      name: 'avatar',
      formData: {
        'username': this.data.username
      },
      success: (res) => {
        let data;
        try {
          data = JSON.parse(res.data);
        } catch (e) {
          console.error('解析上传响应失败:', e);
          wx.hideLoading();
          wx.showToast({
            title: '头像上传失败',
            icon: 'none'
          });
          this.setData({ loading: false });
          return;
        }
        
        if (data.success && data.data && data.data.url) {
          // 获取服务器返回的头像URL
          const serverAvatarUrl = data.data.url;
          
          // 使用获取到的头像URL进行注册
          this.doRegister(serverAvatarUrl);
        } else {
          wx.hideLoading();
          wx.showToast({
            title: data.message || '头像上传失败',
            icon: 'none'
          });
          this.setData({ loading: false });
        }
      },
      fail: (err) => {
        console.error('上传头像失败:', err);
        wx.hideLoading();
        wx.showToast({
          title: '网络错误，头像上传失败',
          icon: 'none'
        });
        this.setData({ loading: false });
      }
    });
  },
  
  // 执行注册
  doRegister(avatarUrl = '') {
    const { username, password, nickname, gender } = this.data;
    
    // 调用注册接口
    wx.request({
      url: 'http://localhost:3000/api/users/register',
      method: 'POST',
      data: {
        username,
        password,
        nickname: nickname || username,
        gender,
        avatar: avatarUrl  // 传递服务器上的头像URL
      },
      success: (res) => {
        if (res.data.success) {
          // 获取用户信息
          const userInfo = res.data.data.user;
          
          // 如果有头像URL，添加到用户信息中
          if (avatarUrl) {
            userInfo.avatar = avatarUrl;
          }
          
          // 保存登录状态和用户信息
          wx.setStorageSync('token', res.data.data.token);
          wx.setStorageSync('userInfo', userInfo);
          
          wx.showToast({
            title: '注册成功',
            icon: 'success'
          });
          
          // 跳转到首页
          wx.switchTab({
            url: '/pages/index/index'
          });
        } else {
          wx.showToast({
            title: res.data.message || '注册失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('注册请求失败', err);
        wx.showToast({
          title: '网络错误，请稍后重试',
          icon: 'none'
        });
      },
      complete: () => {
        wx.hideLoading();
        this.setData({ loading: false });
      }
    });
  },

  // 返回登录页面
  goToLogin() {
    wx.navigateBack();
  }
}); 